package com.zx.flow.api.config;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.zx.flow.api.dict.FlowDict.OperationType;
import java.util.List;
import lombok.Data;
import org.springframework.util.StringUtils;

@Data
public class FlowConfigNode {

    /**
     * 节点编号，自定义，在当前流程中唯一
     */
    private String code;

    /**
     * 节点名称，自定义，在当前流程中唯一
     */
    private String name;

    /**
     * 是否流程开始节点
     */
    private boolean start = false;

    /**
     * 是否流程关闭开始节点
     */
    private boolean end = false;

    /**
     * node的action
     */
    private List<FlowConfigAction> action;

    /**
     * 监听事件
     */
    private List<FlowConfigListener> listeners;

    /**
     * 获得操作人员
     */
    private FlowConfigOperator operators;

    /**
     * 操作类型
     * {@link com.zx.flow.api.dict.FlowDict.OperationType}
     */
    private String operatorType = OperationType.anyone.getCode();

    /**
     * 子流程编号。如果不为空，则找这个流程
     */
    private String subFlowCode;

    /**
     * 是否开启子流程
     *
     * @return
     */
    @JsonIgnore
    public boolean startSubFlow() {
        return !StringUtils.isEmpty(subFlowCode);
    }
}
